package cn.yuanqiao.es.service;

import cn.yuanqiao.common.core.domain.AjaxResult;
import cn.yuanqiao.common.core.page.TableDataInfo;
import cn.yuanqiao.es.domain.ElasticsearchQuery;
import cn.yuanqiao.es.domain.QueryFile;

import java.util.List;
import java.util.Map;

/**
 * @ProjectName: ruoyi-modules-system
 * @Package: cn.yuanqiao.es.service
 * @ClassName: ElasticsearchApiService
 * @Author: lenovo
 * @Description: hbWang
 * @Date: 2023/6/20 17:09
 * @Version: 1.0
 */
public interface ElasticsearchApiService {

    public void tess(List<Map<String, Object>> list);

    /**
     * 创建和重建索引实现
     *
     * @param
     * @return cn.yuanqiao.common.core.domain.AjaxResult
     * @author hbWang
     * @date 2023/6/17 17:56
     */
    AjaxResult createIndex(List<Map<String, Object>> map);

    /**
     * 全量索引和重建索引功能
     *
     * @param
     * @return cn.yuanqiao.common.core.domain.AjaxResult
     * @author hbWang
     * @date 2023/6/17 18:38
     */
    AjaxResult completeIndex(List<String> fileTableName);

    /**
     * 全量索引定时任务
     *
     * @param
     * @return cn.yuanqiao.common.core.domain.AjaxResult
     * @author hbWang
     * @date 2023/11/27 10:54
     */
    AjaxResult completeIndexJob(String tenantCode);

    /**
     * 删除索引功能实现
     *
     * @param
     * @return cn.yuanqiao.common.core.domain.AjaxResult
     * @author hbWang
     * @date 2023/6/17 18:34
     */
    AjaxResult dropIndex(List<String> ids);


    /**
     * 索引查询功能实现
     *
     * @param
     * @return cn.yuanqiao.common.core.domain.AjaxResult
     * @author hbWang
     * @date 2023/6/19 18:52
     */
    TableDataInfo search(QueryFile query);

    /**
     * 查询联想次
     *
     * @param key
     * @return
     */
    List<String> searchAssociate(String key);

    /**
     * 公共库查询实现
     *
     * @param queryFile
     * @return
     */
    public TableDataInfo searchCommunal(QueryFile queryFile, String state, String ztId);


    /**
     * 判断电子文件存在哪些字段
     *
     * @param query
     * @return
     */
    String queryMultiMatch(ElasticsearchQuery query);

    /**
     * 增量索引功能
     *
     * @param
     * @return cn.yuanqiao.common.core.domain.AjaxResult
     * @author hbWang
     * @date 2023/6/26 10:13
     */
    AjaxResult cincrementIndex(List<String> fileTableName);

    /**
     * 增量索引 定时任务
     *
     * @param
     * @return cn.yuanqiao.common.core.domain.AjaxResult
     * @author hbWang
     * @date 2023/11/27 10:58
     */
    AjaxResult cincrementIndexJob(String tenantCode);

    /**
     * 查询配置信息
     *
     * @param configKey
     * @return
     */
    String selectConfigByKey(String configKey);

}
